'''
如果要写入一些不是字符串的东西, 那么将需要先进行转换:
'''
import pickle
import pprint

f=open("C:/Users/zhangyanfeng/Desktop/a.txt","a+")
valuesss=('www.runoob.com', 14)
ssss = str(valuesss)
#f.write(ssss)
f.close();


f=open("C:/Users/zhangyanfeng/Desktop/a.txt","r")
for line in f:
    print(line,end='')
f.close();


'''
f.seek()
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾，例如：
seek(x,0) ： 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) ： 表示从当前位置往后移动x个字符
seek(-x,2)：表示从文件的结尾往前移动x个字符
from_what 值为默认为0，即文件开头。下面给出一个完整的例子：
'''
f = open("C:/Users/zhangyanfeng/Desktop/a.txt","rb+")
f.write(b'0123456789abcdef')
f.seek(5)
f.read(1)
f.seek(-3, 2)
f.read(1)


'''
pickle 模块 通过二进制形式读取保存序列化对象数据
python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去，永久存储。
通过pickle模块的反序列化操作，我们能够从文件中创建上一次程序保存的对象。
'''

data1={'a': [1, 2.0, 3, 4+6j],
         'b': ('string', u'Unicode string'),
         'c': None}
selfref_list=[1,2,3]
selfref_list.append(selfref_list);
output=open('C:/Users/zhangyanfeng/Desktop/c.txt','wb')
pickle.dump(data1,output)
pickle.dump(selfref_list,output,-1)
output.close()

pkl_file=open('C:/Users/zhangyanfeng/Desktop/c.txt','rb')
data11=pickle.load(pkl_file)
pprint.pprint(data11)

data2=pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()
